2.1 Dart Kernel
在编译器设计中,通常会引入 intermediate representation(IR) 的概念,将编译器按照前端、后端隔离。
在 Dart SDK 中,所使用 IR 被称作 Dart Kernel IR,它是 Dart 语言的中间表示形式。它是一种独立于平台的、结构化的、二进制格式,捕获了 Dart 程序的结构和语义。内核用于 Dart Kernel 的各个编译阶段,包括解析、类型推断、优化和代码生成。
在 Dart SDK 中,由前端编译器(CFE、Flutter 的 frontend_server)将 Dart 代码转为 Dart Kernel。
dill 文件
Dart Kernel 文件通常以 .dill
作为后缀。通过 dart compile kernel
可以将源代码编译为 dill 文件,是一个二进制文件,如下所示:
Kernel AST
Dart Kernel 是 Dart 代码的抽象语法树,所以又称为 Kernel AST。dill 文件是对语法树的二进制序列化。
DartVM 可以直接运行 Dart Kernal,因此,也可以理解为:Kernel AST 是“在 Dart VM 上运行的二进制文件”。
本文作者:Maeiee
本文链接:2.1 Dart Kernel
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!